package com.jy.wms.service;

import com.jy.wms.common.annotions.BaseServiceDescribe;
import com.jy.wms.common.base.BaseService;
import com.jy.wms.common.base.ServiceException;
import com.jy.wms.pojo.WmsCustomDictionary;
import com.jy.wms.dao.WmsCustomDictionaryMapper;
import io.swagger.models.auth.In;
import org.springframework.stereotype.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import java.util.List;

    /**
    * @ClassName: WmsCustomDictionaryService.java
    * @Description: TODO(这里用一句话描述这个类的作用)
    * @Author Jane
    * @Date Tue Dec 26 13:58:33 CST 2017
    */

    @Service
    public class WmsCustomDictionaryService extends BaseService<WmsCustomDictionaryMapper,WmsCustomDictionary> {

     /**
     * 插入一条记录_Jane
     * @param entity 实体对象
     * @return int
     */
     @BaseServiceDescribe(moduleName = "新增自定义状态信息",btnName = "新增自定义状态信息")
    public void baseInsert( WmsCustomDictionary entity,String sshzid,String ckid)throws ServiceException{
         entity.setCkid(ckid);
         entity.setSshzid(sshzid);
         Integer mc=dao.countValueBySshzid(entity);
         if(mc==0){
             if(entity.getZcolumn().equals("ckzd1")||entity.getZcolumn().equals("ckzd2")||entity.getZcolumn().equals("ckzd6")||entity.getZcolumn().equals("ckzd7")){
                throw new ServiceException("此列不能定义为状态字段，请换一列操作");
             }else {
                 Integer maxStatus=dao.maxValueBySShzid(sshzid,ckid,entity.getZcolumn());
                 entity.setZstatus(String.valueOf(maxStatus+1));
                 Integer count=dao.baseInsert( entity );
                 if(count<=0){
                     throw new ServiceException("新增自定义状态信息失败");
                 }
             }
         }else{
             throw new ServiceException("自定义状态名称重复，请换一个名称");
         }

    }

   /**
    * 插入一条记录（匹配有值的字段）
    * @param entity 实体对象
    * @return int
    */
    public Integer baseInsertSelective( WmsCustomDictionary entity){
         return dao.baseInsertSelective( entity);
    }

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
    public Integer baseDeleteByPrimaryKey( String id){
         return dao.baseDeleteByPrimaryKey( id);
    }

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys( List<String> idList){
         return dao.baseDeleteBathPrimaryKeys( idList );
    }

    /**
    * 分页查询
    * @param entity 实体
    * @return Page<WmsCustomDictionary>
    */
    public Page<WmsCustomDictionary> baseSelectPage(WmsCustomDictionary entity ){
        PageHelper.startPage(entity.getPage(),entity.getRows());
        return (Page<WmsCustomDictionary>)dao.baseSelectPage( entity );
    }

   /**
    * 查询当前货主下的单个列的状态
    * @param sshzid 所属货主Id
    * @param ckid  所属仓库Id
    * @param zcolumn  列名
    * @return WmsCustomDictionary
    */
    public List<WmsCustomDictionary> baseSelectByPrimaryKey(String sshzid,String ckid,String zcolumn){
        WmsCustomDictionary dictionary=new WmsCustomDictionary();
        dictionary.setCkid(ckid);
        dictionary.setSshzid(sshzid);
        dictionary.setZcolumn(zcolumn);
         return dao.baseSelectByPrimaryKey(dictionary);
    }

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys( List<WmsCustomDictionary> idList ){
         return dao.baseSelectBathPrimaryKeys( idList );
    }

   /**
    *修改 （匹配有值的字段）_Jane
    * @param entity 主键ID列表
    * @return int
    */
   @BaseServiceDescribe(moduleName = "修改自定义状态信息",btnName = "修改自定义状态信息")
    public void baseUpdateByPrimaryKeySelective( WmsCustomDictionary entity)throws ServiceException{
        Integer count=dao.countValueBySshzid(entity);
        if(count==0){
            Integer c=dao.baseUpdateByPrimaryKeySelective( entity);
            if(c<=0){
                throw new ServiceException("修改自定义状态信息失败");
            }
        }else{
            throw new ServiceException("自定义状态名称重复，请换一个名称");
        }
    }

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey( WmsCustomDictionary entity){
         return dao.baseUpdateByPrimaryKey( entity);
    }
}
